Memory systems, such as storage systems, may be implemented in electronic systems, such as computers, cell phones, hand-held electronic devices, etc. Some storage systems, such as solid state drives (SSDs), embedded Multi-Media Controller (eMMC) devices, Universal Flash Storage (UFS) devices, and the like may include non-volatile storage memories for storing host (e.g., user) data from a host. Non-volatile storage memories provide persistent data by retaining stored data when not powered and may include NAND flash memory, NOR flash memory, read only memory (ROM), Electrically Erasable Programmable ROM (EEPROM), Erasable Programmable ROM (EPROM), and resistance variable memory, such as phase change random access memory (PCRAM), resistive random access memory (RRAM), ferroelectric random access memory (FeRAM), magnetoresistive random access memory (MRAM), and programmable conductive memory, among other types of memory.
Resistance variable memory cells can be written (e.g., programmed) to a desired state, such as to one of multiple states. For example, each of the respective multiples states can correspond to a respective threshold voltage (Vt) distribution. A resistance variable memory cell programmed as a single level cell (SLC) can store one of two logical (e.g., binary) data states (e.g., 1 or 0). A resistance variable memory cell programmed as a multi-level cell (MLC) can store more than two logical data states. For example, a resistance variable quad-level cell can be programmed to store one of 16 states, such as 1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110, and 1110.
The respective states (e.g., stored data values) of resistance variable memory cells depend on the respective programmed resistances of the memory cells corresponding to respective Vts of the cells. Resistance variable memory cells can be rewritten by overwriting them without first erasing them, in some examples. This can be referred to as writing in place. The state of the resistance variable memory cell can be determined (e.g., read), for example, by sensing current through the cell responsive to an applied sensing (e.g., a read) voltage. The sensed current, which varies based on the resistance of the cell, can indicate the state of the cell, such as the logical data value stored by the cell. However, the resistance of a programmed resistance variable memory cell can drift (e.g., shift) over time. Resistance drift can result in erroneous sensing of a resistance variable memory cell (e.g., a determination that the cell is in a state other than that to which it was programmed), among other issues.
In some examples a resistance variable cell in a lower resistance state can be said to be in a set state (e.g., corresponding to a logical 1), and a resistance variable cell in a higher resistance state can be said to be in a reset state (e.g., corresponding to a logical 0). For example, a cell in the set state can be written in place (e.g., reset) to a reset state by a reset operation, and a cell in the reset state can be written in place (e.g., set) to a set state by a set operation.